package com.tanhua.server.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.tanhua.common.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.io.IOException;

@Slf4j
@Service
public class UserService {
    // 需要把请求交给spring 来进行发送远程请求
    @Autowired
    private RestTemplate restTemplate;

    @Value("${tanhua.sso.url}")
    private String ssoUrl;

    @Autowired
    private static final ObjectMapper mapper = new ObjectMapper();

    /**
     * 校验token的方法
     * @param token
     * @return
     */
    public User queryUserByToken(String token) {
        // 拼接校验token的请求路径
        String url = ssoUrl + "/user/" +token;
        try {
            //  进行校验token
            String data = restTemplate.getForObject(url, String.class);
            if (data == null){
                // 校验失败
                return null;
            }
            // 因为远程调用 对象再返回时被编译成json数据，所以是字符串接收
            // 把json数据解析成对象
            return mapper.readValue(data, User.class);

        } catch (IOException e) {
            log.error("token校验失败 token = " + token,e);
        }

        return null;
    }
}
